package com.bjsxt.chapter16_strategy;

/**
 * @ClassName Context
 * @Description 管理策略
 * 负责和具体的策略类交互
 * 这样的话，具体的算法和直接的客户端调用分离了，使得算法可以独立于客户端独立的变化。
 * 如果使用spring的依赖注入功能，还可以通过注解动态的注入不同的策略对象，动态的切换不同的算法。
 * @Author 黑马程序员
 * @Date 18:28 2024/6/23
 * @Version 1.0
 **/
public class Context {

    // 当前采用的算法对象
    private Strategy strategy;

    // 可以通过构造器注入
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    // 也可以通过set方法注入
    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }

    public void printPrice(double s){
        System.out.println("您该报价: " + strategy.providePrice(s));
    }
}
